/**
 * 工具类
 * AES加密
 * 特别注意：AES加密中需要前后端共同协商一个密文(密钥),用来加密/解密的。
 * abcdefG1234567 代表此次密文
 */
import CryptoJS from "crypto-js";

//CBC模式
export default {
  // 特别注意：此次是将密文写死到函数内部，也可以当成函数的参数进行动态绑定密文,列如：
  // 只是前两句不一样，外加两个形参.
  // encrypt(word,keyStr, ivStr){ keyStr = keyStr ? keyStr : "abcdefG1234567"; ivStr = ivStr ? ivStr : "abcdefG1234567"; ...........(之后内容与以下一样)}
  // 加密 409蓝江富
  encrypt(word) {
    let keyStr = "1234567890123456";
    let ivStr = "abcdefghijklmnop";
    let key = CryptoJS.enc.Utf8.parse(keyStr);
    let iv = CryptoJS.enc.Utf8.parse(ivStr);
    let srcs = CryptoJS.enc.Utf8.parse(word);
    let encrypted = CryptoJS.AES.encrypt(srcs, key, {
      iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7,
    });
    return encrypted.toString();
  },
  // 解密
  decrypt(word) {
    let keyStr = "1234567890123456";
    let ivStr = "abcdefghijklmnop";
    var key = CryptoJS.enc.Utf8.parse(keyStr);
    let iv = CryptoJS.enc.Utf8.parse(ivStr);
    var decrypt = CryptoJS.AES.decrypt(word, key, {
      iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7,
    });
    return decrypt.toString(CryptoJS.enc.Utf8);
  },
};
